Jackson লাইব্রেরি JSON ডেটা সিরিয়ালাইজ এবং ডেসিরিয়ালাইজ করার জন্য ব্যবহৃত হয়। আপনি যদি Nested JSON (অর্থাৎ, JSON অবজেক্টের মধ্যে আরেকটি অবজেক্ট থাকে) থেকে Java Object তৈরি করতে চান, তাহলে Jackson তাও খুব সহজে করতে পারে।
এখানে, Nested JSON থেকে Java Object ডেসিরিয়ালাইজ করার জন্য একটি উদাহরণ দেয়া হলো।
Step 1: Nested JSON উদাহরণ
ধরা যাক, আমাদের কাছে একটি Nested JSON রয়েছে যা একটি User অবজেক্টের মধ্যে Address অবজেক্ট অন্তর্ভুক্ত।
Nested JSON Example:
{
"name": "John",
"age": 30,
"address": {
"street": "123 Main St",
"city": "Springfield",
"zipcode": "12345"
}
}
এটি একটি User অবজেক্ট যেটির মধ্যে আরেকটি Address অবজেক্ট রয়েছে।
Step 2: Java Class তৈরি করা
Nested JSON কে Java Object এ কনভার্ট করার জন্য, প্রথমে আমরা দুটি ক্লাস তৈরি করব:
- User ক্লাস
- Address ক্লাস
Address.java:
public class Address {
private String street;
private String city;
private String zipcode;
// Getters and Setters
public String getStreet() {
return street;
}
public void setStreet(String street) {
this.street = street;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
public String getZipcode() {
return zipcode;
}
public void setZipcode(String zipcode) {
this.zipcode = zipcode;
}
}
User.java:
public class User {
private String name;
private int age;
private Address address; // Nested Address object
// Getters and Setters
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public Address getAddress() {
return address;
}
public void setAddress(Address address) {
this.address = address;
}
}
- User.java ক্লাসের মধ্যে একটি Address অবজেক্ট রয়েছে, যেটি Nested JSON এর জন্য মানানসই।
Step 3: Jackson দিয়ে JSON ডেটা ডেসিরিয়ালাইজ করা
এখন, আমরা Jackson এর মাধ্যমে এই Nested JSON ডেটাকে Java Object এ কনভার্ট করব।
Main.java:
import com.fasterxml.jackson.databind.ObjectMapper;
public class Main {
public static void main(String[] args) {
try {
// JSON String representing the nested JSON
String json = "{\n" +
" \"name\": \"John\",\n" +
" \"age\": 30,\n" +
" \"address\": {\n" +
" \"street\": \"123 Main St\",\n" +
" \"city\": \"Springfield\",\n" +
" \"zipcode\": \"12345\"\n" +
" }\n" +
"}";
// Create ObjectMapper instance
ObjectMapper objectMapper = new ObjectMapper();
// Deserialize the JSON string to Java Object
User user = objectMapper.readValue(json, User.class);
// Print out the details of the User object
System.out.println("Name: " + user.getName());
System.out.println("Age: " + user.getAge());
System.out.println("Address: " + user.getAddress().getStreet() + ", " +
user.getAddress().getCity() + ", " + user.getAddress().getZipcode());
} catch (Exception e) {
e.printStackTrace();
}
}
}
Explanation:
- ObjectMapper: Jackson এর মূল ক্লাস যা JSON ডেটাকে Java Object এ ডেসিরিয়ালাইজ এবং Java Object কে JSON এ সিরিয়ালাইজ করতে ব্যবহৃত হয়।
- readValue(): এই মেথডটি JSON String কে Java Object এ কনভার্ট করতে ব্যবহৃত হয়।
- এখানে
User.classপাস করা হয়েছে, যা নির্দেশ করে যে আমরা JSON ডেটাকে User ক্লাসে ডেসিরিয়ালাইজ করতে চাই।
Step 4: Output
উপরের কোডটি চালানোর পর, আউটপুটটি হবে:
Name: John
Age: 30
Address: 123 Main St, Springfield, 12345
Step 5: Jackson এর অ্যানোটেশন ব্যবহার করা (Optional)
Jackson এর কিছু অ্যানোটেশন ব্যবহার করে আপনি JSON এর ফিল্ডের নাম কাস্টমাইজ করতে পারেন, যেমন আপনি JSON ফিল্ডের নাম Java Object ফিল্ডের নামের সাথে মেলাতে চান না। এজন্য Jackson এর @JsonProperty অ্যানোটেশন ব্যবহার করা যায়।
User.java (with @JsonProperty):
import com.fasterxml.jackson.annotation.JsonProperty;
public class User {
@JsonProperty("name")
private String name;
@JsonProperty("age")
private int age;
@JsonProperty("address")
private Address address;
// Getters and Setters
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public Address getAddress() {
return address;
}
public void setAddress(Address address) {
this.address = address;
}
}
এটি শুধুমাত্র অ্যানোটেশন ব্যবহার করার মাধ্যমে JSON Property এবং Java Property নামের মধ্যে মিল নিশ্চিত করে।
Jackson লাইব্রেরি দিয়ে Nested JSON থেকে Java Object তৈরি করা খুব সহজ। আপনি ObjectMapper এর মাধ্যমে JSON ডেটাকে Java Objects এ ডেসিরিয়ালাইজ এবং Java Objects কে JSON ডেটা সিরিয়ালাইজ করতে পারেন। এর মাধ্যমে আপনি আপনার JSON ডেটা সংরক্ষণ এবং প্রক্রিয়া সহজভাবে করতে পারবেন।
- ObjectMapper ব্যবহার করে JSON কে Java Object এ কনভার্ট করা।
- Nested JSON এর জন্য সম্পর্কিত ক্লাস গুলি তৈরি করা।
- Jackson এর অ্যানোটেশন দিয়ে JSON ফিল্ডের নাম কাস্টমাইজ করা।
এটি Jackson ব্যবহার করে Nested JSON থেকে Java Objects তৈরির একটি সাধারণ এবং কার্যকরী পদ্ধতি।
Read more